/*
 * Copyright (C) 2023 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef OHOS_IJKPLAYER_GLESFILTER_CONFIG_H
#define OHOS_IJKPLAYER_GLESFILTER_CONFIG_H

#include <glm.hpp>
#include <detail/type_mat.hpp>
#include <detail/type_mat4x4.hpp>
#include <gtc/matrix_transform.hpp>
#include <vec2.hpp>
#include "ijksdl_config.h"
#include <opengles/GLUtils.h>
using namespace glm;
#define MATH_PI     3.1415926535897932384626433832802
#define TEXTURE_NUM 3

class GLESFilterConfig {

public:
      static GLESFilterConfig *GetInstance();
      GLuint m_TextureIds[TEXTURE_NUM];
      GLuint m_VaoId;
      GLuint m_VboIds[3];
      glm::mat4 m_MVPMatrix;
      int m_FrameIndex;
      int FILTER_TYPE = 0;
      static char* GetVShaderStr();
      static char* GetFShaderStr();
      static char* GetFBlackWhiteShaderStr();
      static char* GetFMeshShaderStr();

private:
      GLESFilterConfig();
      static  GLESFilterConfig* instance;

};

#endif